/**
 * 
 * 
 * @author sunyu
 * @since 2016-03-12
 */
Ext.onReady(function() {

	var addItemFormPanel = new Ext.form.FormPanel({
				id : 'addItemFormPanel',
				name : 'addItemFormPanel',
				defaultType : 'textfield',
				labelAlign : 'right',
				labelWidth : 65,
				frame : false,
				bodyStyle : 'padding:5 5 0',
				items : [
				
				<#list tableCarrays as x> 
				{
					fieldLabel : '${x.carrayComment}',
					name : '${x.jsonKey}',
					id : '${x.jsonKey}',
					allowBlank : false,
					labelStyle : micolor,
					anchor : '99%',
					hidden : false

				},
				</#list> 
				{
					id : 'windowmode',
					name : 'windowmode',
					hidden : true
								
				}]
			});

	var addItemWindow = new Ext.Window({
				layout : 'fit',
				width : 400,
				height : 330,
				resizable : false,
				draggable : true,
				closeAction : 'hide',
				modal : true,
				title : '<span class="commoncss">新增</span>',
				// iconCls : 'page_addIcon',
				collapsible : true,
				titleCollapse : true,
				maximizable : false,
				buttonAlign : 'right',
				border : false,
				animCollapse : true,
				pageY : 20,
				pageX : document.body.clientWidth / 2 - 420 / 2,
				animateTarget : Ext.getBody(),
				constrain : true,
				items : [addItemFormPanel],
				buttons : [{
					text : '保存',
					iconCls : 'acceptIcon',
					handler : function() 
					{
						var mode = Ext.getCmp('windowmode').getValue();
						if (mode == 'add')
						{
							saveItem();
						}
						else
						{
							updateItem();
						}
					}
				}, {
					text : '重置',
					id : 'btnReset',
					iconCls : 'tbar_synchronizeIcon',
					handler : function() {
						clearForm(addItemFormPanel.getForm());
					}
				}, {
					text : '关闭',
					iconCls : 'deleteIcon',
					handler : function() {
						addItemWindow.hide();
					}
				}]
			});
	
	
	/**
	 * 根据条件查询
	 */
	function queryItem() {
		store.load({
					params : {
						start : 0,
						limit : bbar.pageSize,
						name : Ext.getCmp('queryParam').getValue()
					}
				});
	}


	/**
	 * 新增人员初始化
	 */
	function addInit()
	 {
		var flag = Ext.getCmp('windowmode').getValue();
		if (typeof(flag) != 'undefined')
		{
			addItemFormPanel.form.getEl().dom.reset();
		} 
		else 
		{
			clearForm(addItemFormPanel.getForm());
		}

		addItemWindow.show();
		addItemWindow.setTitle('<span class="commoncss">新增</span>');
		Ext.getCmp('windowmode').setValue('add');

	}
	/**
	 * 保存数据
	 */
	function saveItem() 
	{
		if (!addItemFormPanel.form.isValid())
		{
			return;
		}
		addItemFormPanel.form.submit({
					url : './${className_d}Manage.do?reqCode=save${className_d}Item',
					waitTitle : '提示',
					method : 'POST',
					waitMsg : '正在处理数据,请稍候...',
					success : function(form, action) {
						addItemWindow.hide();
						store.reload();
						form.reset();
						Ext.MessageBox.alert('提示', action.result.msg);
					},
					failure : function(form, action) {
						var msg = action.result.msg;
						Ext.MessageBox.alert('提示', '数据保存失败:<br>' + msg);
					}
				});
	}

	/**
	 * 删除人员
	 */
	function deleteItems() {
		var record = grid.getSelectionModel().getSelected();
		if (Ext.isEmpty(record)) 
		{
			Ext.Msg.alert('提示', '请先选中要删除的项目!');
			return;
		}
		<#list tableIndexs as tableIndex>
		
		<#if tableIndex.unique>
		<#if tableIndex.indexName=="PRIMARY">
		var strCheckeds = [record.get('${tableIndex.stringCarrayNames1}')];
		</#if>
		</#if>
		</#list>
		
		Ext.Msg.confirm(
						'请确认',
						'<span style="color:red"><b>提示:</b>删除本条信息将同时删除和和此条相关的权限信息,请慎重.</span><br>继续删除吗?',
						function(btn, text) 
						{
							if (btn == 'yes') 
							{
					
								showWaitMsg();
								Ext.Ajax.request({
									url : './${className_d}Manage.do?reqCode=delete${className_d}Items',
									success : function(response) {
										var resultArray = Ext.util.JSON
												.decode(response.responseText);
										store.reload();
										Ext.Msg.alert('提示', resultArray.msg);
									},
									failure : function(response) {
										var resultArray = Ext.util.JSON
												.decode(response.responseText);
										Ext.Msg.alert('提示', resultArray.msg);
									},
									params : {
										strChecked : strCheckeds
									}
								});
							}
						});
	}

	/**
	 * 修改人员初始化
	 */
	function editInit() 
	{
		var record = grid.getSelectionModel().getSelected();
		if (Ext.isEmpty(record)) {
			Ext.MessageBox.alert('提示', '请先选择要修改的项目!');
			return;
		}

		addItemFormPanel.getForm().loadRecord(record);

		addItemWindow.show();
		addItemWindow.setTitle('<span class="commoncss">修改人员</span>');
		Ext.getCmp('windowmode').setValue('edit');
		
	}

	/**
	 * 修改数据
	 */
	function updateUserItem()  {
		addItemFormPanel.form.submit({
					url : './${className_d}Manage.do?reqCode=update${className_d}Item',
					waitTitle : '提示',
					method : 'POST',
					waitMsg : '正在处理数据,请稍候...',
					success : function(form, action) {
						addItemWindow.hide();
						store.reload();
						form.reset();
						Ext.MessageBox.alert('提示', action.result.msg);
					},
					failure : function(form, action) {
						var msg = action.result.msg;
						Ext.MessageBox.alert('提示', '数据修改失败:<br>' + msg);
					}
				});
	}


	// 定义自动当前页行号
	var rownum = new Ext.grid.RowNumberer({
				header : 'NO',
				width : 28
			});


	// 定义列模型
	var cm = new Ext.grid.ColumnModel([rownum,
	<#list tableCarrays as x> 
	{
		header : '${x.carrayComment}', // 列标题
		dataIndex : '${x.jsonKey}', // 数据索引:和Store模型对应
		sortable : true // 是否可排序
	},
	</#list> 
	 {
		header : 'tem',
		dataIndex : 'tem'
//		hidden : true

	}]);
	
	

	/**
	 * 数据存储
	 */
	var store = new Ext.data.Store({
				// 获取数据的方式
				proxy : new Ext.data.HttpProxy({
							url : './${className_d}Manage.do?reqCode=query${className_d}sForManage'
							}),
				reader : new Ext.data.JsonReader({
							totalProperty : 'TOTALCOUNT', // 记录总数
							root : 'ROOT' // Json中的列表数据根节点
						}, [
						<#list tableCarrays as x> 
						{
							name : '${x.jsonKey}', //Json中的属性Key值
						},
						</#list> 
								{
									name : 'tem'
								}])
			});

	/**
	 * 翻页排序时候的参数传递
	 */
	// 翻页排序时带上查询条件
	store.on('beforeload', function() {
		this.baseParams = {
				name : Ext.getCmp('queryParam').getValue()
			};
		});
	// 每页显示条数下拉选择框
	var pagesize_combo = new Ext.form.ComboBox({
				name : 'pagesize',
				triggerAction : 'all',
				mode : 'local',
				store : new Ext.data.ArrayStore({
							fields : ['value', 'text'],
							data : [[10, '10条/页'], [20, '20条/页'],
									[50, '50条/页'], [100, '100条/页'],
									[250, '250条/页'], [500, '500条/页']]
						}),
				valueField : 'value',
				displayField : 'text',
				value : '20',
				editable : false,
				width : 85
			});
	var number = parseInt(pagesize_combo.getValue());
	// 改变每页显示条数reload数据
	pagesize_combo.on("select", function(comboBox) {
				bbar.pageSize = parseInt(comboBox.getValue());
				number = parseInt(comboBox.getValue());
				store.reload({
							params : {
								start : 0,
								limit : bbar.pageSize
							}
						});
			});

	// 分页工具栏
	var bbar = new Ext.PagingToolbar({
				pageSize : number,
				store : store,
				displayInfo : true,
				displayMsg : '显示{0}条到{1}条,共{2}条',
				plugins : new Ext.ux.ProgressBarPager(), // 分页进度条
				emptyMsg : "没有符合条件的记录",
				items : ['-', '&nbsp;&nbsp;', pagesize_combo]
			});

	// 表格工具栏
	var tbar = new Ext.Toolbar({
				items : [{
							text : '新增',
							iconCls : 'addIcon',
							id : 'id_tbi_add',
							handler : function() {
								addInit();
							}
						}, {
							text : '修改',
							id : 'tbi_edit',
							iconCls : 'edit1Icon',
							disabled : true,
							handler : function() {
								editInit();
							}
						}, {
							text : '删除',
							id : 'tbi_del',
							iconCls : 'deleteIcon',
							disabled : true,
							handler : function() {
								deleteItems();
							}
						}, '->',new Ext.form.TextField({
									id : 'queryParam',
									name : 'queryParam',
									emptyText : '请输入人员名称',
									enableKeyEvents : true,
									listeners : {
										specialkey : function(field, e) {
											if (e.getKey() == Ext.EventObject.ENTER) {
												queryItem();
											}
										}
									},
									width : 150
								}), {
							text : '查询',
							iconCls : 'previewIcon',
							handler : function() {
								queryItem();
							}
						}]
			});


	
	// 表格实例
	var grid = new Ext.grid.GridPanel({
				// 表格面板标题,默认为粗体，我不喜欢粗体，这里设置样式将其格式为正常字体
				title : '<span class="commoncss">信息列表</span>',
				height : 500,
				id : 'id_grid_sfxm',
				autoScroll : true,
				frame : true,
				region : 'center', // 和VIEWPORT布局模型对应，充当center区域布局
				margins : '3 3 3 3',
				store : store, // 数据存储
				stripeRows : true, // 斑马线
				cm : cm, // 列模型
				tbar : tbar, // 表格工具栏
				bbar : bbar,// 分页工具栏
				viewConfig : {
	// 不产横向生滚动条, 各列自动扩展自动压缩, 适用于列数比较少的情况
				forceFit : true
				},
				loadMask : {
					msg : '正在加载表格数据,请稍等...'
				}
			});

			
		store.load({
				params : {
					start : 0,
					limit : bbar.pageSize,
					name : Ext.getCmp('queryParam').getValue(),
					firstload : 'true'
				}
			});
	// 监听行选中事件
	grid.on('rowclick', function(pGrid, rowIndex, event) {
				Ext.getCmp('tbi_edit').enable();
				Ext.getCmp('tbi_del').enable();
			});

	grid.on('rowdblclick', function(grid, rowIndex, event) {
				editInit();
			});

	

	// 布局
//	 如果把form作为center区域的话,其Height属性将失效。
		var viewport = new Ext.Viewport({
					layout : 'border',
					items :  [grid]
				});
				
	
});